/**
 * 定时器类
 */
class Timer {
  constructor() {
    this._id = null // 该类唯一id
    this.timeId = null // 该类唯一定时id
    this.func = null // 执行用户自定义回调函数
  }
  /**
   * 递归定时器
   * @param {Function} func 用户自定义回调函数
   * @param {Number} interval 延时时间
   * @param {Boolean} flag true => setTimeout, false => setInterval, 默认为 true
   * @param {Boolean} immediate 是否立即执行，默认为 false
   * @returns
   */
  repeat = (func, interval, flag = true, immediate = false) => {
    // 实例无回调函数 则初始化回调函数
    if (this.func === null) {
      this.func = func
    }
    // 立即执行函数
    if (immediate) {
      func()
    }
    this.timeId = setTimeout(() => {
      func()
      if (!flag) {
        // 确保repeat中只立即执行一次用户自定义回调函数
        this.repeat(func, interval, flag)
      }
    }, interval)
  }
  /**
   * 清除定时器
   */
  clear = () => {
    if (this.timeId) {
      clearTimeout(this.timeId)
      this.timeId = null
    } else {
      console.log('LveRecord: 目前定时器为null ')
    }
  }
}
 
export default Timer
